#!/usr/bin/env bash
#-------------------------------------------------------
#	FileName	: new.sh
#	Author		：hpy
#	Date		：2021年01月01日
#	Description	：新建文件脚本
#-------------------------------------------------------
#UFUNCTION=新建文件模板,根据后缀决定模板类型
main(){
	test $# -eq 0 && echo "没有输出有效的文件名" && exit 2 
	DetFileType $*
}

#-----------------------------------
#识别文件名称并自动调用模板脚本生成
#模板
#-----------------------------------
function DetFileType(){
	for i in $*
	do
		test -f $i && echo "已经存在$i文件" && continue 
		case $i in 
			*.sh)   	MakeBashFile $i ;;  
			*.rb)   	MakeRubyFile $i ;;  
			*.fish) 	MakeFishFile $i ;;  
			*.v) 	    MakeVerilogFile $i ;;
			*.cpp)		MakeCppFile $i ;;  
			*.c)        MakeCFile $1 ;;
			*.h)        MakeHFile $1 ;;
			*.plt)      MakeGnuplotFile $i;; 
			*.awk)      MakeAwkFile $i ;; 
			*.py)       MakePythonFile $i ;;
			*.md)       MakeMarkdownFile $i	 ;;	
			"*") echo "没有识别文件";;
		esac 
	done 
}


#-----------------------------------
#新建 Markdown 的模板文件
#@param1 文件名称
#-----------------------------------
function MakeMarkdownFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件
	echo "---" > $1 
	echo "typora-copy-images-to: images" > $1
	echo "typora-root-url: ./" > $1
	echo "---" > $1
	echo " " > $1
	echo " " > $1	
	echo " " > $1
}

#-----------------------------------
#新建gnuplot的模板文件
#@param1 文件名称
#-----------------------------------
function MakeGnuplotFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹
	echo "#!/usr/bin/env gnuplot" > $1 
	echo "#-------------------------------------------------------" >> $1
	echo "#	FileName	: $(basename $1)" >> $1
	echo "#	Author		：hpy" >> $1
	echo "#	Date		：$(date +%Y年%m月%d日)" >> $1
	echo "#	Description	：" >> $1
	echo "#-------------------------------------------------------" >> $1
	echo " "  >> $1
	echo "set grid  #设置网格" >> $1
	echo "set title \"demo\"" >> $1 
	echo "set key  box #设置图例" >>$1 
	echo "#set xrang [0:10]" >> $1 
	echo "set xlabel \"x\"" >> $1 
	echo "set ylabel \"y\"">> $1
	echo "plot \\" >> $1
    echo "\"m.dat\" u 1 w lp t \"line1\" ,\\" >> $1
    echo "\"m.dat\" u 2 w lp t \"line2\" " >> $1
	echo "pause 2 #等待20s " >> $1
	echo "quit" >> $1

	echo "新建 $1 成功"
	echo ""
}


#-----------------------------------
#新建bash的模板文件
#@param1 文件名称
#-----------------------------------
function MakeBashFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹
	echo "#!/usr/bin/env bash" > $1 
	echo "#-------------------------------------------------------" >> $1
	echo "#	FileName	: $(basename $1)" >> $1
	echo "#	Author		：hpy" >> $1
	echo "#	Date		：$(date +%Y年%m月%d日)" >> $1
	echo "#	Description	：" >> $1
	echo "#-------------------------------------------------------" >> $1
	echo " "  >> $1
	echo "新建 $1 成功"
	echo ""
}

#-----------------------------------
#新建bash的模板文件
#@param1 文件名称
#-----------------------------------
function MakeRubyFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹
	echo "#!/usr/bin/env ruby" > $1 
	echo "# -*- coding: UTF-8 -*-" >>$1 
	echo "#-------------------------------------------------------" >> $1
	echo "#	FileName	: $(basename $1)" >> $1
	echo "#	Author		：hpy" >> $1
	echo "#	Date		：$(date +%Y年%m月%d日)" >> $1
	echo "#	Description	：" >> $1
	echo "#-------------------------------------------------------" >> $1
	echo " "  >> $1
	echo "新建 $1 成功"
	echo ""
}

#-----------------------------------
#新建Fish的模板文件
#@param1 文件名称
#-----------------------------------
function MakeFishFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹
	echo "#!/usr/bin/env fish" > $1 
	echo "#-------------------------------------------------------" >> $1
	echo "#	FileName	: $(basename $1)" >> $1
	echo "#	Author		：hpy" >> $1
	echo "#	Date		：$(date +%Y年%m月%d日)" >> $1
	echo "#	Description	：" >> $1
	echo "#-------------------------------------------------------" >> $1
	echo " "  >> $1
	echo "新建 $1 成功"
	echo ""
}

#-----------------------------------
#新建AWK的模板文件
#@param1 文件名称
#-----------------------------------
function MakeAwkFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹
	echo "#!/usr/bin/awk -f" > $1 
	echo "#-------------------------------------------------------" >> $1
	echo "#	FileName	: $(basename $1)" >> $1
	echo "#	Author		：hpy" >> $1
	echo "#	Date		：$(date +%Y年%m月%d日)" >> $1
	echo "#	Description	：" >> $1
	echo "#-------------------------------------------------------" >> $1
	echo " "  >> $1
	echo "新建 $1 成功"
	echo ""
}

#-----------------------------------
#新建Python的模板文件
#@param1 文件名称
#-----------------------------------
function MakePythonFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹
	echo "#!/usr/bin/env python3" > $1 
	echo "# -*- coding: utf-8 -*-" > $1 
	echo "#-------------------------------------------------------" >> $1
	echo "#	FileName	: $(basename $1)" >> $1
	echo "#	Author		：hpy" >> $1
	echo "#	Date		：$(date +%Y年%m月%d日)" >> $1
	echo "#	Description	：" >> $1
	echo "#-------------------------------------------------------" >> $1
	echo " "  >> $1
	echo "新建 $1 成功"
	echo ""
}

#-----------------------------------
#新建 verilog 的模板文件
#@param1 文件名称
#-----------------------------------
function MakeVerilogFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹
	mname=$(basename $1)
	mname=$(echo $mname | cut -d . -f1)
	echo "\`timescale 1ns / 1ps"> $1
	echo "/*--------------------------------------------------------------------*\\" >> $1
	echo "FileName        : $(basename $1)" >> $1
	echo "Author          ：hpy" >> $1
	echo "Email           ：yuan_hp@qq.com" >> $1
	echo "Date            ：$(date +%Y年%m月%d日)" >> $1
	echo "Description     ：" >> $1
	echo "\\*--------------------------------------------------------------------*/" >> $1
	echo "module $mname #(" >>$1
	echo " " >> $1 
	echo ")(" >> $1
	echo "    input clk," >> $1
	echo "    input rst_n" >> $1
	echo ");" >> $1
	echo " " >> $1 
	echo "/* ------------------ function -------------------- */" >> $1 
	echo " " >> $1 
	echo "/* -------------------- param --------------------- */" >> $1 
	echo " " >> $1 
	echo "/*---------------------- reg ---------------------- */" >> $1 
	echo " " >> $1 
	echo "/*----------------------- wire ---------------------*/" >> $1 
	echo " " >> $1 
	echo "/*--------------------- assign ---------------------*/" >> $1 
	echo " " >> $1 
	echo "/*---------------------- blk -----------------------*/" >> $1 
	echo " " >> $1 
	echo " " >> $1 
	echo "always @(posedge clk or negedge rst_n) begin">> $1
	echo "    if(!rst_n)begin">> $1
	echo "">> $1
	echo "    end else begin">> $1
	echo "">> $1
	echo "    end">> $1
	echo "end">> $1
	echo " " >> $1 
	echo " " >> $1 
	echo "endmodule">> $1

	echo " "  >> $1
	echo "新建 $1 成功"
	echo ""
}



#-----------------------------------
#新建 Cpp 的模板文件
#@param1 文件名称
#-----------------------------------
function MakeCppFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹

	echo "/**"> $1
	echo " *   Copyright (C) $(date +%Y) All rights reserved."  >> $1
	echo " *"  >> $1
	echo " *   FileName      ：$(basename $1)"  >> $1
	echo " *   Author        ：hpy"  >> $1
	echo " *   Email         ：yuan_hp@qq.com"  >> $1
	echo " *   Date          ：$(date +%Y年%m月%d日)"  >> $1
	echo " *   Description   ："  >> $1
	echo " */"  >> $1
	echo "">> $1
	echo "#include <bits/stdc++.h>">> $1
	echo "using namespace std;">> $1
	echo "">> $1
	echo "int main(int argc, char* argv[])">> $1
	echo "{">> $1
	echo "	return 0;">> $1
	echo "}">> $1
	echo "">> $1

	echo "新建 $1 成功"
	echo ""
}

#-----------------------------------
#新建 .C 的模板文件
#@param1 文件名称
#-----------------------------------
function MakeCFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹
	local td=$(basename $1)
	local n1=$(echo $td | cut -d . -f1 )
	echo "/**"> $1
	echo " *   Copyright (C) $(date +%Y) All rights reserved."  >> $1
	echo " *"  >> $1
	echo " *   FileName      ：$(basename $1)"  >> $1
	echo " *   Author        ：hpy"  >> $1
	echo " *   Email         ：yuan_hp@qq.com"  >> $1
	echo " *   Date          ：$(date +%Y年%m月%d日)"  >> $1
	echo " *   Description   ："  >> $1
	echo " */"  >> $1
	echo "">> $1
	echo "#include \"$n1.h\"">> $1
	echo "">> $1
	echo "">> $1
	echo "int main(int argc, char* argv[])">> $1
	echo "{">> $1
	echo "	return 0;">> $1
	echo "}">> $1
	echo "">> $1

	echo "新建 $1 成功"
	echo ""
}

#-----------------------------------
#新建 .H 的模板文件
#@param1 文件名称
#-----------------------------------
function MakeHFile(){
	local fdir=$(dirname $1)
	test ! -d $fdir && mkdir -p $fdir  #文件夹路径不存在则先新建文件夹
	local td=$(basename $1)
	local n1=$(echo $td | cut -d . -f1 | tr [a-z] [A-Z])
	local n2=$(echo $td | cut -d . -f2 | tr [a-z] [A-Z])
	echo "/**"> $1
	echo " *   Copyright (C) $(date +%Y) All rights reserved."  >> $1
	echo " *"  >> $1
	echo " *   FileName      ：$(basename $1)"  >> $1
	echo " *   Author        ：hpy"  >> $1
	echo " *   Email         ：yuan_hp@qq.com"  >> $1
	echo " *   Date          ：$(date +%Y年%m月%d日)"  >> $1
	echo " *   Description   ："  >> $1
	echo " */"  >> $1
	echo "#ifndef __${n1}_${n2}__" >> $1 
	echo "#define __${n1}_${n2}__" >> $1
	echo "">> $1
	echo "">> $1
	echo "">> $1
	echo "">> $1
	echo "#endif">> $1
	echo "新建 $1 成功"
	echo ""
}


main $*
